API: Remove gdk_screen_get_width() and gdk_screen_get_height()
authorBenjamin Otte <otte@redhat.com>
Fri, 9 Sep 2016 12:53:18 +0000 (14:53 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Oct 2016 16:17:21 +0000 (18:17 +0200)
... and gdk_screen_get_width_mm() and gdk_screen_get_height_mm() and
the shortcut counterparts that call these functions on the default
screen.

Modern display servers don't provide an ability to query the size of a
screen or display so we shouldn't allow that either.

14 files changed:
docs/reference/gdk/gdk4-sections.txt
gdk/broadway/gdkscreen-broadway.c
gdk/broadway/gdkscreen-broadway.h
gdk/broadway/gdkwindow-broadway.c
gdk/gdkmain.h
gdk/gdkscreen.c
gdk/gdkscreen.h
gdk/gdkscreenprivate.h
gdk/wayland/gdkscreen-wayland.c
gdk/win32/gdkscreen-win32.c
gdk/x11/gdkdnd-x11.c
gdk/x11/gdkscreen-x11.c
gdk/x11/gdkscreen-x11.h
modules/input/gtkimcontextxim.c

index f26c22d3c6d667cc440738a5999b680e90e95fa3..ea8808b8c62eb760ce820ec20683783fc7da300c 100644 (file)
@@ -22,12 +22,6 @@ gdk_get_display
 <SUBSECTION>
 gdk_flush
 
-<SUBSECTION>
-gdk_screen_width
-gdk_screen_height
-gdk_screen_width_mm
-gdk_screen_height_mm
-
 
 <SUBSECTION>
 gdk_pointer_grab
@@ -211,10 +205,6 @@ gdk_screen_is_composited
 gdk_screen_get_root_window
 gdk_screen_get_display
 gdk_screen_get_number
-gdk_screen_get_width
-gdk_screen_get_height
-gdk_screen_get_width_mm
-gdk_screen_get_height_mm
 gdk_screen_list_visuals
 gdk_screen_get_toplevel_windows
 gdk_screen_make_display_name
index c123d98fddd0416a7be80720f9d66360aa4dc0a8..81e1a58108f158b6c780dc9a46ffbe1aaf51244f 100644 (file)
@@ -40,8 +40,6 @@ G_DEFINE_TYPE (GdkBroadwayScreen, gdk_broadway_screen, GDK_TYPE_SCREEN)
 static void
 gdk_broadway_screen_init (GdkBroadwayScreen *screen)
 {
-  screen->width = 1024;
-  screen->height = 768;
 }
 
 static GdkDisplay *
@@ -50,30 +48,6 @@ gdk_broadway_screen_get_display (GdkScreen *screen)
   return GDK_BROADWAY_SCREEN (screen)->display;
 }
 
-static gint
-gdk_broadway_screen_get_width (GdkScreen *screen)
-{
-  return GDK_BROADWAY_SCREEN (screen)->width;
-}
-
-static gint
-gdk_broadway_screen_get_height (GdkScreen *screen)
-{
-  return GDK_BROADWAY_SCREEN (screen)->height;
-}
-
-static gint
-gdk_broadway_screen_get_width_mm (GdkScreen *screen)
-{
-  return gdk_screen_get_width (screen) * 25.4 / 96;
-}
-
-static gint
-gdk_broadway_screen_get_height_mm (GdkScreen *screen)
-{
-  return gdk_screen_get_height (screen) * 25.4 / 96;
-}
-
 static gint
 gdk_broadway_screen_get_number (GdkScreen *screen)
 {
@@ -92,25 +66,19 @@ _gdk_broadway_screen_size_changed (GdkScreen                       *screen,
 {
   GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
   GdkMonitor *monitor;
-  gint width, height;
+  GdkRectangle size;
   GList *toplevels, *l;
 
-  width = gdk_screen_get_width (screen);
-  height = gdk_screen_get_height (screen);
-
-  broadway_screen->width   = msg->width;
-  broadway_screen->height  = msg->height;
+  monitor = GDK_BROADWAY_DISPLAY (broadway_screen->display)->monitor;
+  gdk_monitor_get_geometry (monitor, &size);
 
-  if (width == gdk_screen_get_width (screen) &&
-      height == gdk_screen_get_height (screen))
+  if (msg->width == size.width &&
+      msg->height == size.height)
     return;
 
-  monitor = GDK_BROADWAY_DISPLAY (broadway_screen->display)->monitor;
-
   gdk_monitor_set_size (monitor, msg->width, msg->height);
   gdk_monitor_set_physical_size (monitor, msg->width * 25.4 / 96, msg->height * 25.4 / 96);
 
-  g_signal_emit_by_name (screen, "size-changed");
   toplevels = gdk_screen_get_toplevel_windows (screen);
   for (l = toplevels; l != NULL; l = l->next)
     {
@@ -118,9 +86,7 @@ _gdk_broadway_screen_size_changed (GdkScreen                       *screen,
       GdkWindowImplBroadway *toplevel_impl = GDK_WINDOW_IMPL_BROADWAY (toplevel->impl);
 
       if (toplevel_impl->maximized)
-       gdk_window_move_resize (toplevel, 0, 0,
-                               gdk_screen_get_width (screen),
-                               gdk_screen_get_height (screen));
+       gdk_window_move_resize (toplevel, 0, 0, msg->width, msg->height);
     }
 }
 
@@ -241,10 +207,6 @@ gdk_broadway_screen_class_init (GdkBroadwayScreenClass *klass)
   object_class->finalize = gdk_broadway_screen_finalize;
 
   screen_class->get_display = gdk_broadway_screen_get_display;
-  screen_class->get_width = gdk_broadway_screen_get_width;
-  screen_class->get_height = gdk_broadway_screen_get_height;
-  screen_class->get_width_mm = gdk_broadway_screen_get_width_mm;
-  screen_class->get_height_mm = gdk_broadway_screen_get_height_mm;
   screen_class->get_number = gdk_broadway_screen_get_number;
   screen_class->get_root_window = gdk_broadway_screen_get_root_window;
   screen_class->is_composited = gdk_broadway_screen_is_composited;
index 45dd36d63f50f9c0abcb26da83d605a2606cc8f5..12c7f2f0e17e4e43035125cd2695316e8b9e40d7 100644 (file)
@@ -47,9 +47,6 @@ struct _GdkBroadwayScreen
   GdkDisplay *display;
   GdkWindow *root_window;
 
-  int width;
-  int height;
-
   /* Visual Part */
   GdkVisual **visuals;
   gint nvisuals;
index 32d1a0771c3eb21fd09e3f6f10a9685a21610a7b..e6b878f63b359f5ba58d7f3494247a95b25e3427 100644 (file)
@@ -231,8 +231,8 @@ _gdk_broadway_screen_init_root_window (GdkScreen * screen)
   window->y = 0;
   window->abs_x = 0;
   window->abs_y = 0;
-  window->width = gdk_screen_get_width (screen);
-  window->height = gdk_screen_get_height (screen);
+  window->width = 1024;
+  window->height = 768;
   window->viewable = TRUE;
 
   _gdk_window_update_size (broadway_screen->root_window);
@@ -887,7 +887,9 @@ static void
 gdk_broadway_window_maximize (GdkWindow *window)
 {
   GdkWindowImplBroadway *impl;
-  GdkScreen *screen;
+  GdkDisplay *display;
+  GdkMonitor *monitor;
+  GdkRectangle geom;
 
   if (GDK_WINDOW_DESTROYED (window) ||
       !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
@@ -907,11 +909,13 @@ gdk_broadway_window_maximize (GdkWindow *window)
   impl->pre_maximize_width = window->width;
   impl->pre_maximize_height = window->height;
 
-  screen = gdk_window_get_screen (window);
+  display = gdk_window_get_display (window);
+  monitor = gdk_display_get_primary_monitor (display);
+  gdk_monitor_get_geometry (monitor, &geom);
 
-  gdk_window_move_resize (window, 0, 0,
-                         gdk_screen_get_width (screen),
-                         gdk_screen_get_height (screen));
+  gdk_window_move_resize (window,
+                          geom.x, geom.y,
+                          geom.width, geom.height);
 }
 
 static void
index 09e087382b9ffd8d08c3f495de7bf9a98f401da7..e623dbda37fa5995e5a2c0d95f520ff4d325e4e6 100644 (file)
@@ -104,16 +104,6 @@ GDK_DEPRECATED_IN_3_0_FOR(gdk_display_device_is_grabbed)
 gboolean      gdk_pointer_is_grabbed (void);
 #endif /* GDK_MULTIDEVICE_SAFE */
 
-GDK_AVAILABLE_IN_ALL
-gint gdk_screen_width  (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-gint gdk_screen_height (void) G_GNUC_CONST;
-
-GDK_AVAILABLE_IN_ALL
-gint gdk_screen_width_mm  (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-gint gdk_screen_height_mm (void) G_GNUC_CONST;
-
 GDK_AVAILABLE_IN_ALL
 void gdk_set_double_click_time (guint msec);
 
index 6432fceddad6f1644059e0edf47c226b6aa2dd6e..d198afcb837620b98838392a8c70cff15767b532 100644 (file)
@@ -104,25 +104,6 @@ gdk_screen_class_init (GdkScreenClass *klass)
                                                        G_PARAM_READWRITE|G_PARAM_STATIC_NAME|
                                                        G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
 
-  /**
-   * GdkScreen::size-changed:
-   * @screen: the object on which the signal is emitted
-   * 
-   * The ::size-changed signal is emitted when the pixel width or 
-   * height of a screen changes.
-   *
-   * Since: 2.2
-   */
-  signals[SIZE_CHANGED] =
-    g_signal_new (g_intern_static_string ("size-changed"),
-                  G_OBJECT_CLASS_TYPE (klass),
-                  G_SIGNAL_RUN_LAST,
-                  G_STRUCT_OFFSET (GdkScreenClass, size_changed),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE,
-                  0);
-
   /**
    * GdkScreen::composited-changed:
    * @screen: the object on which the signal is emitted
@@ -194,66 +175,6 @@ _gdk_screen_close (GdkScreen *screen)
     }
 }
 
-/**
- * gdk_screen_width:
- *
- * Gets the width of the default screen in pixels. The returned
- * size is in ”application pixels”, not in ”device pixels” (see
- * gdk_screen_get_monitor_scale_factor()).
- *
- * Returns: the width of the default screen in pixels.
- **/
-gint
-gdk_screen_width (void)
-{
-  return gdk_screen_get_width (gdk_screen_get_default ());
-}
-
-/**
- * gdk_screen_height:
- *
- * Gets the height of the default screen in pixels. The returned
- * size is in ”application pixels”, not in ”device pixels” (see
- * gdk_screen_get_monitor_scale_factor()).
- *
- * Returns: the height of the default screen in pixels.
- **/
-gint
-gdk_screen_height (void)
-{
-  return gdk_screen_get_height (gdk_screen_get_default ());
-}
-
-/**
- * gdk_screen_width_mm:
- *
- * Returns the width of the default screen in millimeters.
- * Note that on many X servers this value will not be correct.
- *
- * Returns: the width of the default screen in millimeters,
- * though it is not always correct.
- **/
-gint
-gdk_screen_width_mm (void)
-{
-  return gdk_screen_get_width_mm (gdk_screen_get_default ());
-}
-
-/**
- * gdk_screen_height_mm:
- *
- * Returns the height of the default screen in millimeters.
- * Note that on many X servers this value will not be correct.
- *
- * Returns: the height of the default screen in millimeters,
- * though it is not always correct.
- **/
-gint
-gdk_screen_height_mm (void)
-{
-  return gdk_screen_get_height_mm (gdk_screen_get_default ());
-}
-
 /**
  * gdk_screen_set_font_options:
  * @screen: a #GdkScreen
@@ -444,91 +365,6 @@ gdk_screen_get_display (GdkScreen *screen)
   return GDK_SCREEN_GET_CLASS (screen)->get_display (screen);
 }
 
-
-/**
- * gdk_screen_get_width:
- * @screen: a #GdkScreen
- *
- * Gets the width of @screen in pixels. The returned size is in
- * ”application pixels”, not in ”device pixels” (see
- * gdk_screen_get_monitor_scale_factor()).
- *
- * Returns: the width of @screen in pixels.
- *
- * Since: 2.2
- **/
-gint
-gdk_screen_get_width (GdkScreen *screen)
-{
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
-
-  return GDK_SCREEN_GET_CLASS (screen)->get_width (screen);
-}
-
-/**
- * gdk_screen_get_height:
- * @screen: a #GdkScreen
- *
- * Gets the height of @screen in pixels. The returned size is in
- * ”application pixels”, not in ”device pixels” (see
- * gdk_screen_get_monitor_scale_factor()).
- *
- * Returns: the height of @screen in pixels.
- *
- * Since: 2.2
- **/
-gint
-gdk_screen_get_height (GdkScreen *screen)
-{
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
-
-  return GDK_SCREEN_GET_CLASS (screen)->get_height (screen);
-}
-
-/**
- * gdk_screen_get_width_mm:
- * @screen: a #GdkScreen
- *
- * Gets the width of @screen in millimeters.
- *
- * Note that this value is somewhat ill-defined when the screen
- * has multiple monitors of different resolution. It is recommended
- * to use the monitor dimensions instead.
- *
- * Returns: the width of @screen in millimeters.
- *
- * Since: 2.2
- **/
-gint
-gdk_screen_get_width_mm (GdkScreen *screen)
-{
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
-
-  return GDK_SCREEN_GET_CLASS (screen)->get_width_mm (screen);
-}
-
-/**
- * gdk_screen_get_height_mm:
- * @screen: a #GdkScreen
- *
- * Returns the height of @screen in millimeters.
- *
- * Note that this value is somewhat ill-defined when the screen
- * has multiple monitors of different resolution. It is recommended
- * to use the monitor dimensions instead.
- *
- * Returns: the heigth of @screen in millimeters.
- *
- * Since: 2.2
- **/
-gint
-gdk_screen_get_height_mm (GdkScreen *screen)
-{
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
-
-  return GDK_SCREEN_GET_CLASS (screen)->get_height_mm (screen);
-}
-
 /**
  * gdk_screen_get_number:
  * @screen: a #GdkScreen
index 52df2ade0deb5b2a3e18ad02c0036b3dade61dda..5f1d7a197d8b81d6aa7bca7d56bc5ee6231b3743 100644 (file)
@@ -54,14 +54,6 @@ GDK_AVAILABLE_IN_ALL
 GdkDisplay * gdk_screen_get_display           (GdkScreen   *screen);
 GDK_AVAILABLE_IN_ALL
 gint         gdk_screen_get_number            (GdkScreen   *screen);
-GDK_AVAILABLE_IN_ALL
-gint         gdk_screen_get_width             (GdkScreen   *screen);
-GDK_AVAILABLE_IN_ALL
-gint         gdk_screen_get_height            (GdkScreen   *screen);
-GDK_AVAILABLE_IN_ALL
-gint         gdk_screen_get_width_mm          (GdkScreen   *screen);
-GDK_AVAILABLE_IN_ALL
-gint         gdk_screen_get_height_mm         (GdkScreen   *screen);
 
 GDK_AVAILABLE_IN_ALL
 GList *      gdk_screen_list_visuals          (GdkScreen   *screen);
index 15c405604c7814daf6e02b6c4f0e5aac69d2f7bb..05a18aa120cf7211cbb606689fa9b2669e53f7f1 100644 (file)
@@ -44,10 +44,6 @@ struct _GdkScreenClass
   GObjectClass parent_class;
 
   GdkDisplay * (* get_display)           (GdkScreen *screen);
-  gint         (* get_width)             (GdkScreen *screen);
-  gint         (* get_height)            (GdkScreen *screen);
-  gint         (* get_width_mm)          (GdkScreen *screen);
-  gint         (* get_height_mm)         (GdkScreen *screen);
   gint         (* get_number)            (GdkScreen *screen);
   GdkWindow *  (* get_root_window)       (GdkScreen *screen);
   gint         (* get_n_monitors)        (GdkScreen *screen);
index 6c8b8b9385017e20c7113a7bbe76eb02a2f94094..8d0a19b5393062efbdd4b7babda3860aed1a5fd2 100644 (file)
@@ -58,9 +58,6 @@ struct _GdkWaylandScreen
   GdkDisplay *display;
   GdkWindow *root_window;
 
-  int width, height;
-  int width_mm, height_mm;
-
   /* Visual Part */
   GdkVisual *visual;
 
@@ -114,30 +111,6 @@ gdk_wayland_screen_get_display (GdkScreen *screen)
   return GDK_WAYLAND_SCREEN (screen)->display;
 }
 
-static gint
-gdk_wayland_screen_get_width (GdkScreen *screen)
-{
-  return GDK_WAYLAND_SCREEN (screen)->width;
-}
-
-static gint
-gdk_wayland_screen_get_height (GdkScreen *screen)
-{
-  return GDK_WAYLAND_SCREEN (screen)->height;
-}
-
-static gint
-gdk_wayland_screen_get_width_mm (GdkScreen *screen)
-{
-  return GDK_WAYLAND_SCREEN (screen)->width_mm;
-}
-
-static gint
-gdk_wayland_screen_get_height_mm (GdkScreen *screen)
-{
-  return GDK_WAYLAND_SCREEN (screen)->height_mm;
-}
-
 static gint
 gdk_wayland_screen_get_number (GdkScreen *screen)
 {
@@ -826,15 +799,11 @@ _gdk_wayland_screen_new (GdkDisplay *display)
 
   screen_wayland = GDK_WAYLAND_SCREEN (screen);
   screen_wayland->display = display;
-  screen_wayland->width = 0;
-  screen_wayland->height = 0;
 
   screen_wayland->visual = gdk_wayland_visual_new (screen);
 
   screen_wayland->root_window =
-    _gdk_wayland_screen_create_root_window (screen,
-                                            screen_wayland->width,
-                                            screen_wayland->height);
+    _gdk_wayland_screen_create_root_window (screen, 0, 0);
 
   init_settings (screen);
 
@@ -851,10 +820,6 @@ _gdk_wayland_screen_class_init (GdkWaylandScreenClass *klass)
   object_class->finalize = gdk_wayland_screen_finalize;
 
   screen_class->get_display = gdk_wayland_screen_get_display;
-  screen_class->get_width = gdk_wayland_screen_get_width;
-  screen_class->get_height = gdk_wayland_screen_get_height;
-  screen_class->get_width_mm = gdk_wayland_screen_get_width_mm;
-  screen_class->get_height_mm = gdk_wayland_screen_get_height_mm;
   screen_class->get_number = gdk_wayland_screen_get_number;
   screen_class->get_root_window = gdk_wayland_screen_get_root_window;
   screen_class->get_system_visual = gdk_wayland_screen_get_system_visual;
@@ -881,58 +846,6 @@ _gdk_wayland_screen_init (GdkWaylandScreen *screen_wayland)
 {
 }
 
-static void
-update_screen_size (GdkWaylandScreen *screen_wayland)
-{
-  GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (screen_wayland->display);
-  gboolean emit_changed = FALSE;
-  gint width, height;
-  gint width_mm, height_mm;
-  int i;
-
-  width = height = 0;
-  width_mm = height_mm = 0;
-  for (i = 0; i < display_wayland->monitors->len; i++)
-    {
-      GdkMonitor *monitor = display_wayland->monitors->pdata[i];
-
-      /* XXX: Largely assuming here that monitor areas
-       * are contiguous and never overlap.
-       */
-      if (monitor->geometry.x > 0)
-        width_mm += monitor->width_mm;
-      else
-        width_mm = MAX (width_mm, monitor->width_mm);
-
-      if (monitor->geometry.y > 0)
-        height_mm += monitor->height_mm;
-      else
-        height_mm = MAX (height_mm, monitor->height_mm);
-
-      width = MAX (width, monitor->geometry.x + monitor->geometry.width);
-      height = MAX (height, monitor->geometry.y + monitor->geometry.height);
-    }
-
-  if (screen_wayland->width_mm != width_mm ||
-      screen_wayland->height_mm != height_mm)
-    {
-      emit_changed = TRUE;
-      screen_wayland->width_mm = width_mm;
-      screen_wayland->height_mm = height_mm;
-    }
-
-  if (screen_wayland->width != width ||
-      screen_wayland->height != height)
-    {
-      emit_changed = TRUE;
-      screen_wayland->width = width;
-      screen_wayland->height = height;
-    }
-
-  if (emit_changed)
-    g_signal_emit_by_name (screen_wayland, "size-changed");
-}
-
 #ifdef G_ENABLE_DEBUG
 
 static const char *
@@ -1012,7 +925,6 @@ output_handle_geometry (void             *data,
       GdkDisplay *display = GDK_MONITOR (monitor)->display;
       GdkWaylandScreen *screen = GDK_WAYLAND_SCREEN (gdk_display_get_default_screen (display));
       g_signal_emit_by_name (screen, "monitors-changed");
-      update_screen_size (screen);
     }
 }
 
@@ -1035,7 +947,6 @@ output_handle_done (void             *data,
     }
 
   g_signal_emit_by_name (screen_wayland, "monitors-changed");
-  update_screen_size (screen_wayland);
 }
 
 static void
@@ -1081,7 +992,6 @@ output_handle_mode (void             *data,
     {
       GdkScreen *screen = gdk_display_get_default_screen (GDK_MONITOR (monitor)->display);
       g_signal_emit_by_name (screen, "monitors-changed");
-      update_screen_size (GDK_WAYLAND_SCREEN (screen));
     }
 }
 
@@ -1183,7 +1093,6 @@ _gdk_wayland_screen_remove_output (GdkScreen *screen,
       gdk_display_monitor_removed (GDK_DISPLAY (display_wayland), GDK_MONITOR (monitor));
       g_object_unref (monitor);
       g_signal_emit_by_name (screen_wayland, "monitors-changed");
-      update_screen_size (screen_wayland);
     }
 }
 
index 0b5d104e0613dbb6a84d4a994136cdc83dbea3bc..de6e5aed945a0b4b7d707db94b44311aed4fced5 100644 (file)
@@ -380,30 +380,6 @@ gdk_win32_screen_get_display (GdkScreen *screen)
   return _gdk_display;
 }
 
-static gint
-gdk_win32_screen_get_width (GdkScreen *screen)
-{
-  return GDK_WIN32_SCREEN (screen)->root_window->width;
-}
-
-static gint
-gdk_win32_screen_get_height (GdkScreen *screen)
-{
-  return GDK_WIN32_SCREEN (screen)->root_window->height;
-}
-
-static gint
-gdk_win32_screen_get_width_mm (GdkScreen *screen)
-{
-  return (double) gdk_screen_get_width (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSX) * 25.4;
-}
-
-static gint
-gdk_win32_screen_get_height_mm (GdkScreen *screen)
-{
-  return (double) gdk_screen_get_height (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY) * 25.4;
-}
-
 static GdkWindow *
 gdk_win32_screen_get_root_window (GdkScreen *screen)
 {
@@ -573,10 +549,6 @@ gdk_win32_screen_class_init (GdkWin32ScreenClass *klass)
   object_class->finalize = gdk_win32_screen_finalize;
 
   screen_class->get_display = gdk_win32_screen_get_display;
-  screen_class->get_width = gdk_win32_screen_get_width;
-  screen_class->get_height = gdk_win32_screen_get_height;
-  screen_class->get_width_mm = gdk_win32_screen_get_width_mm;
-  screen_class->get_height_mm = gdk_win32_screen_get_height_mm;
   screen_class->get_number = gdk_win32_screen_get_number;
   screen_class->get_root_window = gdk_win32_screen_get_root_window;
   screen_class->is_composited = gdk_win32_screen_is_composited;
index 439981853c7835aba6bc486372f4d709b68f949f..bb322c4c10fc06b8b15a41a72cc67d5b7560e8d1 100644 (file)
@@ -638,8 +638,8 @@ gdk_window_cache_new (GdkScreen *screen)
     {
       cow = XCompositeGetOverlayWindow (xdisplay, GDK_WINDOW_XID (root_window));
       gdk_window_cache_add (result, cow, 0, 0, 
-                           gdk_screen_get_width (screen) * GDK_X11_SCREEN(screen)->window_scale, 
-                           gdk_screen_get_height (screen) * GDK_X11_SCREEN(screen)->window_scale, 
+                           gdk_window_get_width (root_window) * GDK_X11_SCREEN(screen)->window_scale, 
+                           gdk_window_get_height (root_window) * GDK_X11_SCREEN(screen)->window_scale, 
                            TRUE);
       XCompositeReleaseOverlayWindow (xdisplay, GDK_WINDOW_XID (root_window));
     }
index 450872d99df56b791b7e27efae7a3c4411948941..95c005cbabd83d86195bbc2d28a77e76129ec699 100644 (file)
@@ -79,30 +79,6 @@ gdk_x11_screen_get_display (GdkScreen *screen)
   return GDK_X11_SCREEN (screen)->display;
 }
 
-static gint
-gdk_x11_screen_get_width (GdkScreen *screen)
-{
-  return GDK_X11_SCREEN (screen)->width / GDK_X11_SCREEN (screen)->window_scale;
-}
-
-static gint
-gdk_x11_screen_get_height (GdkScreen *screen)
-{
-  return GDK_X11_SCREEN (screen)->height / GDK_X11_SCREEN (screen)->window_scale;
-}
-
-static gint
-gdk_x11_screen_get_width_mm (GdkScreen *screen)
-{
-  return WidthMMOfScreen (GDK_X11_SCREEN (screen)->xscreen);
-}
-
-static gint
-gdk_x11_screen_get_height_mm (GdkScreen *screen)
-{
-  return HeightMMOfScreen (GDK_X11_SCREEN (screen)->xscreen);
-}
-
 static gint
 gdk_x11_screen_get_number (GdkScreen *screen)
 {
@@ -238,6 +214,7 @@ gdk_x11_screen_get_work_area (GdkScreen    *screen,
                               GdkRectangle *area)
 {
   GdkX11Screen   *x11_screen = GDK_X11_SCREEN (screen);
+  GdkWindow      *root_window;
   Atom            workarea;
   Atom            type;
   Window          win;
@@ -254,13 +231,14 @@ gdk_x11_screen_get_work_area (GdkScreen    *screen,
 
   display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
   disp_screen = GDK_SCREEN_XNUMBER (screen);
+  root_window = gdk_screen_get_root_window (screen);
   workarea = XInternAtom (display, "_NET_WORKAREA", True);
 
   /* Defaults in case of error */
   area->x = 0;
   area->y = 0;
-  area->width = gdk_screen_get_width (screen);
-  area->height = gdk_screen_get_height (screen);
+  area->width = gdk_window_get_width (root_window);
+  area->height = gdk_window_get_height (root_window);
 
   if (!gdk_x11_screen_supports_net_wm_hint (screen,
                                             gdk_atom_intern_static_string ("_NET_WORKAREA")))
@@ -757,9 +735,13 @@ init_no_multihead (GdkScreen *screen, gboolean *changed)
   GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
   GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
   GdkX11Monitor *monitor;
+  GdkWindow *root_window;
   GdkRectangle geometry;
+  int width_mm, height_mm;
   int i;
 
+  root_window = gdk_screen_get_root_window (screen);
+
   for (i = 0; i < x11_display->monitors->len; i++)
     {
       GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
@@ -780,23 +762,24 @@ init_no_multihead (GdkScreen *screen, gboolean *changed)
       g_ptr_array_add (x11_display->monitors, monitor);
     }
 
+  width_mm = WidthMMOfScreen (x11_screen->xscreen);
+  height_mm = HeightMMOfScreen (x11_screen->xscreen);
+
   gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
   if (0 != geometry.x ||
       0 != geometry.y ||
-      gdk_screen_get_width (screen) != geometry.width ||
-      gdk_screen_get_height (screen) != geometry.height ||
-      gdk_screen_get_width_mm (screen) != gdk_monitor_get_width_mm (GDK_MONITOR (monitor)) ||
-      gdk_screen_get_height_mm (screen) != gdk_monitor_get_height_mm (GDK_MONITOR (monitor)))
+      gdk_window_get_width (root_window) != geometry.width ||
+      gdk_window_get_height (root_window) != geometry.height ||
+      width_mm != gdk_monitor_get_width_mm (GDK_MONITOR (monitor)) ||
+      height_mm != gdk_monitor_get_height_mm (GDK_MONITOR (monitor)))
     *changed = TRUE;
 
   gdk_monitor_set_position (GDK_MONITOR (monitor), 0, 0);
   gdk_monitor_set_size (GDK_MONITOR (monitor),
-                        gdk_screen_get_width (screen),
-                        gdk_screen_get_height (screen));
+                        gdk_window_get_width (root_window),
+                        gdk_window_get_height (root_window));
   g_object_notify (G_OBJECT (monitor), "workarea");
-  gdk_monitor_set_physical_size (GDK_MONITOR (monitor),
-                                 gdk_screen_get_width_mm (screen),
-                                 gdk_screen_get_height_mm (screen));
+  gdk_monitor_set_physical_size (GDK_MONITOR (monitor), width_mm, height_mm);
   gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), x11_screen->window_scale);
 
   if (x11_display->primary_monitor != 0)
@@ -834,32 +817,6 @@ init_multihead (GdkScreen *screen)
   return any_changed;
 }
 
-static void
-update_bounding_box (GdkScreen *screen)
-{
-  GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
-  GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
-  gint i, x1, y1, x2, y2;
-
-  x1 = y1 = G_MAXINT;
-  x2 = y2 = G_MININT;
-
-  for (i = 0; i < x11_display->monitors->len; i++)
-    {
-      GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
-      GdkRectangle geometry;
-
-      gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
-      x1 = MIN (x1, geometry.x);
-      y1 = MIN (y1, geometry.y);
-      x2 = MAX (x2, geometry.x + geometry.width);
-      y2 = MAX (y2, geometry.y + geometry.height);
-    }
-
-  x11_screen->width = x2 - x1;
-  x11_screen->height = y2 - y1;
-}
-
 GdkScreen *
 _gdk_x11_screen_new (GdkDisplay *display,
                     gint        screen_number) 
@@ -897,7 +854,6 @@ _gdk_x11_screen_new (GdkDisplay *display,
 
   _gdk_x11_screen_init_visuals (screen);
   _gdk_x11_screen_init_root_window (screen);
-  update_bounding_box (screen);
 
   return screen;
 }
@@ -988,7 +944,6 @@ process_monitors_change (GdkScreen *screen)
 {
   if (init_multihead (screen))
     {
-      update_bounding_box (screen);
       g_signal_emit_by_name (screen, "monitors-changed");
     }
 }
@@ -997,15 +952,9 @@ void
 _gdk_x11_screen_size_changed (GdkScreen *screen,
                              XEvent    *event)
 {
-  gint width, height;
 #ifdef HAVE_RANDR
   GdkX11Display *display_x11;
-#endif
 
-  width = gdk_screen_get_width (screen);
-  height = gdk_screen_get_height (screen);
-
-#ifdef HAVE_RANDR
   display_x11 = GDK_X11_DISPLAY (gdk_screen_get_display (screen));
 
   if (display_x11->have_randr13 && event->type == ConfigureNotify)
@@ -1013,23 +962,11 @@ _gdk_x11_screen_size_changed (GdkScreen *screen,
 
   XRRUpdateConfiguration (event);
 #else
-  if (event->type == ConfigureNotify)
-    {
-      XConfigureEvent *rcevent = (XConfigureEvent *) event;
-      Screen       *xscreen = gdk_x11_screen_get_xscreen (screen);
-
-      xscreen->width   = rcevent->width;
-      xscreen->height  = rcevent->height;
-    }
-  else
+  if (event->type != ConfigureNotify)
     return;
 #endif
 
   process_monitors_change (screen);
-
-  if (width != gdk_screen_get_width (screen) ||
-      height != gdk_screen_get_height (screen))
-    g_signal_emit_by_name (screen, "size-changed");
 }
 
 void
@@ -1040,8 +977,9 @@ _gdk_x11_screen_get_edge_monitors (GdkScreen *screen,
                                    gint      *right)
 {
   GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
-  gint          top_most_pos = x11_screen->height;
-  gint          left_most_pos = x11_screen->width;
+  GdkWindow    *root_window = gdk_screen_get_root_window (screen);
+  gint          top_most_pos = gdk_window_get_height (root_window);
+  gint          left_most_pos = gdk_window_get_width (root_window);
   gint          bottom_most_pos = 0;
   gint          right_most_pos = 0;
   gint          i;
@@ -1538,10 +1476,6 @@ gdk_x11_screen_class_init (GdkX11ScreenClass *klass)
   object_class->finalize = gdk_x11_screen_finalize;
 
   screen_class->get_display = gdk_x11_screen_get_display;
-  screen_class->get_width = gdk_x11_screen_get_width;
-  screen_class->get_height = gdk_x11_screen_get_height;
-  screen_class->get_width_mm = gdk_x11_screen_get_width_mm;
-  screen_class->get_height_mm = gdk_x11_screen_get_height_mm;
   screen_class->get_number = gdk_x11_screen_get_number;
   screen_class->get_root_window = gdk_x11_screen_get_root_window;
   screen_class->get_system_visual = _gdk_x11_screen_get_system_visual;
index 3b0fb35d44eb674502bd5de56beb303c060043a5..d94d14af683bea12d19d5ee65259ab972e6015e4 100644 (file)
@@ -43,9 +43,6 @@ struct _GdkX11Screen
   GdkWindow *root_window;
   gint screen_num;
 
-  gint width;
-  gint height;
-
   gint window_scale;
   gboolean fixed_window_scale;
 
index 9a152b50608a5225942a78780dbd1419748842a8..4519d13c160a928b49fcc39bab3c3381484c40f4 100644 (file)
@@ -1624,7 +1624,7 @@ on_status_toplevel_configure (GtkWidget         *toplevel,
 
   if (status_window->window)
     {
-      height = gdk_screen_get_height (gtk_widget_get_screen (toplevel));
+      height = gdk_window_get_height (gdk_screen_get_root_window (gtk_widget_get_screen (toplevel)));
 
       gdk_window_get_frame_extents (gtk_widget_get_window (toplevel),
                                     &rect);